package LeetCode刷题;

/**
 * @program: Java_Study
 * @author: Xiaofan
 * @createTime: 2021-09-23 15:32
 * @description: Functions of this class is
 *
 * 编写一个函数来查找字符串数组中的最长公共前缀。
 * 如果不存在公共前缀，返回空字符串 ""。
 *
 * 官方解法：
 * class Solution {
 *     public String longestCommonPrefix(String[] strs) {
 *         if (strs == null || strs.length == 0) {
 *             return "";
 *         }
 *         String prefix = strs[0];
 *         int count = strs.length;
 *         for (int i = 1; i < count; i++) {
 *             prefix = longestCommonPrefix(prefix, strs[i]);
 *             if (prefix.length() == 0) {
 *                 break;
 *             }
 *         }
 *         return prefix;
 *     }
 *
 *     public String longestCommonPrefix(String str1, String str2) {
 *         int length = Math.min(str1.length(), str2.length());
 *         int index = 0;
 *         while (index < length && str1.charAt(index) == str2.charAt(index)) {
 *             index++;
 *         }
 *         return str1.substring(0, index);
 *     }
 * }
 **/
public class No最长公共前缀 {

    public static void main(String args[]){
        System.out.println(longestCommonPrefix(new String[]{"cir","car"}));
    }
    public static String longestCommonPrefix(String[] strs) {
        if(strs==null||strs.length==0){
            return "";
        }
        String prefix=strs[0];
        for(int i=1;i<strs.length;i++){
            prefix=findMaxPrefix(prefix,strs[i]);
        }
        return prefix;
    }
    private static String findMaxPrefix(String prefix,String str){
        int index=0;
        while (index<Math.min(prefix.length(),str.length())){
            if(prefix.charAt(index)!=str.charAt(index)){
                break;
            }
            index++;
        }
       return str.substring(0,index);
    }
}